//Given a non-empty array of decimal digits representing a non-negative integer,
// increment one to the integer. 
//
// The digits are stored such that the most significant digit is at the head of 
//the list, and each element in the array contains a single digit. 
//
// You may assume the integer does not contain any leading zero, except the numb
//er 0 itself. 
//
// 
// Example 1: 
//
// 
//Input: digits = [1,2,3]
//Output: [1,2,4]
//Explanation: The array represents the integer 123.
// 
//
// Example 2: 
//
// 
//Input: digits = [4,3,2,1]
//Output: [4,3,2,2]
//Explanation: The array represents the integer 4321.
// 
//
// Example 3: 
//
// 
//Input: digits = [0]
//Output: [1]
// 
//
// 
// Constraints: 
//
// 
// 1 <= digits.length <= 100 
// 0 <= digits[i] <= 9 
// 
// Related Topics 数组 
// 👍 582 👎 0


package editor.cn;

import java.util.Arrays;

//Java：Plus One
public class P66PlusOne{
    public static void main(String[] args) {
        Solution solution = new P66PlusOne().new Solution();
        // TO TEST
        int[] nums = {9};
        int[] ints = solution.plusOne(nums);
        System.out.println(Arrays.toString(ints));
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] plusOne(int[] digits) {

        if (digits[digits.length - 1] > 8) {
            int[] results = new int[digits.length + 1];
            boolean flag = true;
            for (int i = digits.length-1; i >=-1 ; i--) {
                if (flag&&i>-1) {
                    if (++digits[i] > 9) {
                        digits[i] = 0;
                        flag = true;
                    } else {
                        return digits;
                    }
                    results[i + 1] = 0;
                } else {
                    results[i+1] = 1;
                }
            }
            return results;
        } else {
            digits[digits.length - 1]++;
            return digits;
        }

    }
}
//leetcode submit region end(Prohibit modification and deletion)

}